package com.tcm.service;

import com.tcm.entity.Collect;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tcm.entity.dto.param.CollectUpdateParam;
import com.tcm.entity.resp.PageR;
import com.tcm.entity.vo.CollectDetailResp;
import com.tcm.entity.vo.CollectListResult;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author Guqier
 * @description 针对表【ts_collect(题目收藏表)】的数据库操作Service
 * @createDate 2023-08-20 16:52:10
 */
public interface CollectService extends IService<Collect> {

    /**
     * 添加是收藏
     * @param param      收藏更新参数
     * @param currUserId 当前登录用户ID
     * @return 添加结果，true为成功，false是保存失败
     */
    @Transactional
    boolean addCollect(CollectUpdateParam param, Long currUserId);

    /**
     * 取消收藏
     * @param itemId     题目ID
     * @param currUserId 当前用户ID
     * @return 删除结果，true为成功
     */
    @Transactional
    boolean canselCollect(Long itemId, Long currUserId);

    /**
     * 学生获取收藏列表
     * @param currUserId 当前登录用户ID
     * @return 收藏列表
     */
    List<CollectListResult> getStuCollectList(Long currUserId);

    /**
     * 获取收藏详细
     * @param current    当前数
     * @param currUserId 当前用户ID
     * @return 收藏详细
     */
    PageR<CollectDetailResp> getCollectDetail(Integer current, Long currUserId);

    /**
     * 教师获取学生收藏列表
     * @param page        当前页号
     * @param pageSize    页面大小
     * @param account     检索学生账号
     * @param currUserId  当前登录用户ID
     * @param currAccount 当前教师账号
     * @return 学生收藏列表
     */
    PageR<CollectListResult> getCollectListByTeacher(Integer page, Integer pageSize, String account, Long currUserId, String currAccount);
}
